package com.foreknow.controller;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 1.什么是会话:它是指客户端与服务器之间的数据传输(登录,购物车)
 * 2.会话的管理:也就是对数据的管理
 * 3.常用的会话技术: cookie 数据会保存在客户端 session数据会保存服务器端
 *
 * 设么是cookie:这是客户端的技术,程序会把每个用户的数据以cookie 的形式写给用户各自的浏览器,
 * 当用户使用浏览器再次访问web服务器的时候它会有它各自的数据.
 * 包javax.servlet.http.Cookie
 * Cookie类:主要是用于存储会话数据
 *1.可以通过构造器来创建Cookie对象
 * 2.设置Cookie
 *  setMaxAge 设置Cookie的有效时间(以秒为单位的)24*60*60
 *  3.发送cookie到浏览器端保存
 *      addCookie
 *  4.服务器端接受Cookie
 *  request.getCookies 返回值类型Cookie[]
 *
 *  Cookie的原理
 *  1.可以在服务器端创建一个Cookie对象,要把会话的数据存储到会话中
 *
 *  2.服务器端会发送Cookie信息给浏览器,之后会把Cookie保存到浏览器端
 *
 *  3.浏览器在下次访问的时候,会携带Cookie信息 (这些信息会包含在http的请求头中)
 *
 *  4.服务器端会到浏览器端接收携带Cookie的信息
 *
 *  注意:后期如果解决客户端与服务器端的多次请求的问题(解决方案可以使用h5中的本地存储)
 *
 *  setMaxAge(int exp)
 *      1.正数:表示cookie数据保存到浏览器的缓存到硬盘中.数值表示要保存的时间
 *      2.负数:表示cookie数据保存浏览器的内存中,如果浏览器关闭,cookie就失效;
 *      3. 0 表示删除同名的cookie数据
 * cookie的数据类型只能保存非中文字符串类型.可以保存多个cookie信息,一个浏览器可以保存300个cookie,
 * 每个站点最多可以存入20个cookie,每个cookie的大小限制为4kb
 */
public class CookieDemo  extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        Cookie cookie = new Cookie("name","tom123");//创建cookie对象
//        cookie.setMaxAge(1*30*24*60*60);//设置cookie的有效时间
//        resp.addCookie(cookie);
        //获取客户端的Cookie
        PrintWriter out = resp.getWriter();
        Cookie[] cookies = req.getCookies();
        if(cookies!=null){
            for (Cookie c:cookies) {
                    String name = c.getName();
                    String value = c.getValue();
                    out.println(name+"----"+value);
            }
        }else{
            out.println("没接收到cookie数据");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}








































